package cn.tedu.store.commons.pojo.search.entity;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;
import java.math.BigDecimal;

@Data
@Accessors(chain = true)    // 支持链式Set赋值
@AllArgsConstructor         // 自动生成当前类的全参构造方法
@NoArgsConstructor          // 自动生成当前类的无参构造方法
@Document(indexName = "products")
public class EsProduct implements Serializable {

    /**
     * 记录id
     */
    @Id
    private Long id;

    /**
     * SPU名称
     */
    @Field(type = FieldType.Text,
            analyzer = "ik_max_word",
            searchAnalyzer = "ik_max_word")
    private String name;

    /**
     * SPU编号
     */
    @Field(type = FieldType.Keyword)
    private String typeNumber;

    /**
     * 标题
     */
    @Field(type = FieldType.Text,
            analyzer = "ik_max_word",
            searchAnalyzer = "ik_max_word")
    private String title;

    /**
     * 简介
     */
    @Field(type = FieldType.Text,
            analyzer = "ik_max_word",
            searchAnalyzer = "ik_max_word")
    private String description;

    /**
     * 价格（显示在列表中）
     */
    @Field(type = FieldType.Keyword)
    private BigDecimal listPrice;

    /**
     * 当前库存（冗余）
     */
    @Field(type = FieldType.Keyword)
    private Integer stock;

    /**
     * 计件单位
     */
    @Field(type = FieldType.Keyword, index = false)
    private String unit;

    /**
     * 品牌id
     */
    @Field(type = FieldType.Keyword)
    private Long brandId;

    /**
     * 品牌名称（冗余）
     */
    @Field(type = FieldType.Keyword)
    private String brandName;

    /**
     * 类别id
     */
    @Field(type = FieldType.Keyword)
    private Long categoryId;

    /**
     * 类别名称（冗余）
     */
    @Field(type = FieldType.Keyword)
    private String categoryName;

    /**
     * 属性模板id
     */
    @Field(type = FieldType.Keyword, index = false)
    private String attributeTemplateId;


    /**
     * 相册id
     */
    @Field(name="album_id")
    private Long albumId;

    /**
     * 组图URLs，使⽤JSON格式表示
     */
    @Field(type = FieldType.Keyword, index = false)
    private String pictures;

    /**
     * 关键词列表，各关键词使⽤英⽂的逗号分隔
     */
    @Field(type = FieldType.Text,
            analyzer = "ik_max_word",
            searchAnalyzer = "ik_max_word")
    private String keywords;

    /**
     * 标签列表，各标签使⽤英⽂的逗号分隔，原则上最多3个
     */
    @Field(type = FieldType.Text,
            analyzer = "ik_max_word",
            searchAnalyzer = "ik_max_word")
    private String tags;

    /**
     * 销量（冗余）
     */
    private Integer sales;

    /**
     * 买家评论数量总和（冗余）
     */
    private Integer commentCount;

    /**
     * 买家好评数量总和（冗余）
     */
    private Integer positiveCommentCount;

    /**
     * ⾃定义排序序号
     */
    private Integer sort;

    /**
     * 是否标记为删除，1=已删除，0=未删除
     */
    private Integer isDeleted;

    /**
     * 是否上架（发布），1=已上架，0=未上架 （下架）
     */
    private Integer isPublished;

    /**
     * 是否新品，1=新品，0=非新品
     */
    private Integer isNewArrival;

    /**
     * 是否推荐，1=推荐，0=不推荐
     */
    private Integer isRecommend;

    /**
     * 是否已审核，1=已审核，0=未审核
     */
    private Integer isChecked;

    /**
     * SPU的详情
     */
    @ApiModelProperty(value = "SPU的详情")
    private String detail;

}
